package common.fengkai.filepost.utils;

/**
 * Unicode字符串与中文字符串互转工具类
 *
 * @author wdrj.huangzx
 */
public class Unicode2CnUtil {
    /**
     * Unicode字符串转中文字符串
     *
     * @param unicode Unicode字符串
     * @return 中文字符串
     */
    public static String unicodeToCn(String unicode) {
        /** 以 \ u 分割，因为java注释也能识别unicode，因此中间加了一个空格*/
        String[] strs = unicode.split("\\\\u");
        String returnStr = "";
        // 由于unicode字符串以 \ u 开头，因此分割出的第一个字符是""。
        for (int i = 1; i < strs.length; i++) {
            returnStr += (char) Integer.valueOf(strs[i], 16).intValue();
        }
        return returnStr;
    }

    /**
     * 中文字符串转Unicode字符串
     *
     * @param cn 中文字符串
     * @return 对应的Unicode字符串
     */
    public static String cnToUnicode(String cn) {
        char[] chars = cn.toCharArray();
        StringBuilder returnStr = new StringBuilder();
        for (int i = 0; i < chars.length; i++) {
            returnStr.append("\\u").append(Integer.toString(chars[i], 16));
        }
        return returnStr.toString();
    }

    /**
     * 测试
     */
    public static void main(String[] args) {
        // Unicode码（这里多的第一个斜杠是转移后面的斜杠用的）
        String unicodeString = "\\\u592a\\u5e73\\u8d22\\u4ea7\\u4fdd\\u9669\\u6709\\u9650\\u516c\\u53f8|\\u516c\\u53f8\\u627f\\u4fdd\\u4e13\\u7528\\u7ae0";
        // 转中文
        String zhString = unicodeToCn(unicodeString);
        System.out.println("Unicode转中文结果： " + zhString);
        unicodeString = cnToUnicode(zhString);
        // 输出结果中每个中文字符只有一个斜杠
        System.out.println("中文转Unicode结果： " + unicodeString);
    }
}
